#include "vio/front_end/feature.h"

namespace vio {

Feature::Feature(std::shared_ptr<Frame> frame,
                 const Eigen::Vector2d& px,
                 const int& l)
    : type(CORNER), frame_ptr(frame), px(px), level(l), grad(1.0, 0.0) {
  bearing = frame->cam_ptr_->pixel2camera(px);
}

Feature::Feature(std::shared_ptr<Frame> frame,
                 const Eigen::Vector2d& px,
                 const Eigen::Vector3d& b,
                 const int& l)
    : type(CORNER),
      frame_ptr(frame),
      px(px),
      bearing(b),
      level(l),
      grad(1.0, 0.0) {}

Feature::Feature(std::shared_ptr<Frame> frame,
                 Point::Ptr point,
                 const Eigen::Vector2d& px,
                 const Eigen::Vector3d& b,
                 const int& l)
    : type(CORNER),
      frame_ptr(frame),
      px(px),
      bearing(b),
      level(l),
      point_ptr(point),
      grad(1.0, 0.0) {}

}  // namespace vio
